package com.thenewboston.rajarshi; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.app.Activity; import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; public class ExternalData extends Activity implements OnItemSelectedListener, OnClickListener { TextView canWrite, canRead; String state; boolean canW, canR; Spinner spinner; String[] paths = { "Music", "Pictures", "Download" }; File path = null; File file = null; EditText saveFile; Button confirm, save; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.externaldata); canWrite = (TextView) findViewById(R.id.tvCanWrite); canRead = (TextView) findViewById(R.id.tvCanRead); confirm = (Button) findViewById(R.id.bConfirmSaveAs); save = (Button) findViewById(R.id.bSaveFile); saveFile = (EditText) findViewById(R.id.etSaveAs); confirm.setOnClickListener(this); save.setOnClickListener(this); checkState(); ArrayAdapter<String> adapter = new ArrayAdapter<String>( ExternalData.this, android.R.layout.simple_spinner_item, paths); spinner = (Spinner) findViewById(R.id.spinner1); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); } private void checkState() { // TODO Auto-generated method stub state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { // read and write canWrite.setText("We can write to SD card."); canRead.setText("We can read from SD card."); canW = canR = true; } else if (state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) { // read but can't write canWrite.setText("We cannot write to SD card."); canRead.setText("We can read from SD card."); canW = false; canR = true; } else { canWrite.setText("We cannot write to SD card."); canRead.setText("We cannot read from SD card."); canW = canR = false; } } public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub int position = spinner.getSelectedItemPosition(); switch (position) { case 0: path = Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC); break; case 1: path = Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); break; case 2: path = Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); break; } } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } public void onClick(View arg0) { int id = arg0.getId(); if (id == R.id.bSaveFile) { String f = saveFile.getText().toString(); file = new File(path, f + ".png"); checkState(); if (canW == canR == true) { path.mkdirs(); try { InputStream is = getResources().openRawResource( R.drawable.greenball); OutputStream os = new FileOutputStream(file); byte[] data = new byte[is.available()]; is.read(data); os.write(data); is.close(); os.close(); Toast t = Toast.makeText(ExternalData.this, "File has been Saved", Toast.LENGTH_LONG); t.show(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } else if (id == R.id.bConfirmSaveAs) { save.setVisibility(View.VISIBLE); } } }